using Simple.Contracts.Models;
using Simple.Contracts.Models.Common;
using Simple.Contracts.Models.Common.Page;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Simple.Contracts.Contracts
{
    /// <summary>
    /// 老人信息
    /// </summary>
    public interface IElderlyService
    {
        /// <summary>
        /// 获取老人列表
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<Result<PageDto<ElderlyInfoDto>>> List(ElderlyInfoListInput input);

        /// <summary>
        /// 保存老人信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<Result<long>> Save(ElderlyInfoSaveInput input);

        /// <summary>
        /// 删除老人信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<Result<bool>> Delete(ElderlyInfoDeleteInput input);

        /// <summary>
        /// 设置老人状态
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<Result<bool>> SetStatus(ElderlyInfoSetStatusInput input);

        /// <summary>
        /// 保存老人照护记录
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<Result<bool>> SaveElderlyCarePlan(SaveElderlyCarePlanInput input);

        /// <summary>
        /// 获取老人照护记录
        /// </summary>
        /// <param name="elderlyId"></param>
        /// <returns></returns>
        Task<Result<List<ElderlyCarePlanMissionDto>>> GetElderlyCarePlanMissionList(long elderlyId);

        /// <summary>
        /// 获取员工照护的老人列表
        /// </summary>
        /// <param name="EmployeeId"></param>
        /// <returns></returns>
        Task<Result<List<ElderlyCareInfoDto>>> GetElderlyByEmployeeId(long EmployeeId);

        /// <summary>
        /// 获取照护任务信息
        /// </summary>
        /// <param name="elderlyCarePlanMissionId"></param>
        /// <returns></returns>
        Task<Result<ElderlyCarePlanMissionDto?>> GetElderlyCarePlanMission(long elderlyCarePlanMissionId);

        /// <summary>
        /// 保存老人照护记录
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<Result<bool>> SaveElderlyCareRecord(SaveElderlyCareRecordInput input);

        /// <summary>
        /// 获取老人照护记录列表
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<Result<PageDto<ElderlyCareRecordDto>>> GetElderlyCareRecordList(GetElderlyCareRecordListInput input);
    }
}